package day23;

import org.junit.Test;

import java.io.File;
import java.io.FilenameFilter;

public class Demo2 {
    @Test
    public void test(){
        File file=new File("C:\\Users\\梅穿内裤\\Desktop\\qq");
        //获取file对象下所有子文件名
        String names[]=file.list();
        for (String name:names){
            System.out.println(name);
        }
        File[] files=file.listFiles();
        for (File f:files){
            //方是一个目录，还需要调研listFiles(),涉及到了递归
            System.out.println(f.getName());
        }
    }

    //获取里面所有以java为后缀的文件
    @Test
    public void test2(){
        File file=new File("C:\\Users\\梅穿内裤\\Desktop\\qq");
        String names[]=file.list((dir, name) -> name.endsWith(".java"));
        for (String name:names){
            System.out.println(name);
        }
    }

    //获取所有文件，包括子包里面的文件
    @Test
    public void test3(){
        File f=new File("C:\\Users\\梅穿内裤\\Desktop\\qq");
        getChild(f);
    }
    //通过递归获取
    public void getChild(File f){
        File[] fs=f.listFiles();
        for (File file:fs){
            System.out.println(file.getName());
            //如果是目录就递归
            if(file.isDirectory()) getChild(file);
            //如果file是文件，直接打印文件名
            //如果file是目录，进行递归继续查找字母
//            if (file.isFile()){
//                System.out.println(file.getName());
//            }else {
//                System.out.println(file.getName());
//                getChild(file);
//            }
        }
    }
    //输入一个目录，通过递归的方式删除整个目录
    @Test
    public void test4(){
        //注意地址不要写错了，不要写盘符，要自定义的目录
        File f=new File("C:\\Users\\梅穿内裤\\Desktop\\qq\\aa");
        deleteFile(f);

    }
    public void deleteFile(File f){
        File fs[]=f.listFiles();
        //f文件（可以直接删） f是空目录（可以直接删）
        //f非空目录（需要递归）
        if (fs!=null&&fs.length>0){  //判断f是否是非空目录
            for (File file:fs){
                //file遍历出来的子文件对象，不知道是否存在子目录，需要递归
                deleteFile(file);
            }
        }
        boolean b=f.delete();
        if (b){
            System.out.println("删除成功:"+f.getAbsolutePath());
        }
    }
}

